// 
//  Main.cs
//  
//  Author:
//       Nikita Tsukanov <keks9n@gmail.com>
// 
//  Copyright (c) 2011 Nikita Tsukanov
// 
//  This program is free software; you can redistribute it and/or modify
//  it under the terms of the GNU General Public License as published by
//  the Free Software Foundation; either version 2 of the License, or
//  (at your option) any later version.
// 
//  This program is distributed in the hope that it will be useful,
//  but WITHOUT ANY WARRANTY; without even the implied warranty of
//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
//  GNU General Public License for more details.
//  
//  You should have received a copy of the GNU General Public License
//  along with this program; if not, write to the Free Software
//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
// 


using System;
using Gtk;

namespace SkypeTab
{
	class MainClass
	{
		
		public static void ShowError(string Error)
		{
			new ErrorDialog(Error).Show();
		}
		
		public static Gdk.FilterReturn MyFilter(IntPtr xevent, Gdk.Event evnt)
		{
			var uevent=(X11.X.XEvent)
				System.Runtime.InteropServices.Marshal.PtrToStructure(xevent, typeof(X11.X.XEvent));
			if((uevent.type==X11.X.XEventName.KeyPress)||
			   (uevent.type==X11.X.XEventName.KeyRelease))
			{
				var keyevent=(X11.X.XKeyEvent)
				System.Runtime.InteropServices.Marshal.PtrToStructure(xevent, typeof(X11.X.XKeyEvent));
				
				
				//Block Ctrl+W 
				if(((keyevent.state&4)!=0)&&(keyevent.keycode==25))
					return Gdk.FilterReturn.Remove;
			}
			return Gdk.FilterReturn.Continue;
		}
		
		public static void Main (string[] args)
		{

			Application.Init ();
			Gdk.Window.AddFilterForAll(MyFilter);
			
			if(SkypeApi.CheckRunning())
			{
				ShowError("Skype is already running. Please, close it and try again.");
				return;
			}
			
			
			
			MainWindow win = new MainWindow ();
			win.Show ();
			Application.Run ();
		}
	}
}

